package chap_06.customer_collector;

import chap_04.Dish;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 收集器接口
 */
public class Run_04 {
    List<Dish> menu = Arrays.asList(
            new Dish("pork", false, 800, Dish.Type.MEAT),
            new Dish("beef", false, 700, Dish.Type.MEAT),
            new Dish("chicken", false, 400, Dish.Type.MEAT),
            new Dish("french fries", true, 530, Dish.Type.OTHER),
            new Dish("rice", true, 350, Dish.Type.OTHER),
            new Dish("season fruit", true, 120, Dish.Type.OTHER),
            new Dish("pizza", true, 550, Dish.Type.OTHER),
            new Dish("prawns", false, 300, Dish.Type.FISH),
            new Dish("salmon", false, 450, Dish.Type.FISH));

    @Test
    public void demo_01() {
        List<Dish> collect = menu.stream()
                .collect(new ToListCollector<Dish>());

        System.out.println(collect);
    }

    @Test
    public void demo_02() {
        ArrayList<Object> collect = menu.stream()
                .collect(
                        ArrayList::new, //供应源
                        List::add,      //累加器
                        List::addAll    //组合器
                );

        System.out.println(collect);
    }
}
